package models

// Error 异常信息
type Error struct {
	Kind    int64  `json:"kind"`    // 报告分类，0表示异常报告
	Message string `json:"message"` // 异常信息，异常对象提示信息
	Stack   string `json:"stack"`   // 触发错误的方式，异常对象的stack字段(需要处理)
	Time    int64  `json:"time"`    // 异常发生的时间，时间戳
	Type    int64  `json:"type"`    // 异常类型，0-3表示JS/资源/请求/白屏异常
	URL     string `json:"url"`     // 页面地址，不带?后面的get参数
	WebID   int64  `json:"web_id"`  // 网站id，由使用者调用脚本函数传递
}

// Per 性能信息
type Per struct {
	DCL   int64  `json:"dcl"`    // DOM加载完成时间(dom_ready)，毫秒数
	DNS   int64  `json:"dns"`    // DNS解析耗时，毫秒数
	Fcp   int64  `json:"fcp"`    // 首次内容绘制，毫秒数
	FP    int64  `json:"fp"`     // 首次绘制时间，毫秒数
	Kind  int64  `json:"kind"`   // 报告分类，1表示性能报告
	L     int64  `json:"l"`      // 页面完全加载时间，毫秒数
	Lcp   int64  `json:"lcp"`    // 页面最大内容渲染时间，毫秒数
	Time  int64  `json:"time"`   // 产生日志的时间，时间戳
	URL   string `json:"url"`    // 页面地址，不带?后面的get参数
	WebID int64  `json:"web_id"` // 网站id，由使用者调用脚本函数传递
}

// UserAction 用户行为信息
type UserAction struct {
	Area     int64  `json:"area"`     // 地区，34个地区转换成数字存储，无法获取则传递0
	Browser  int64  `json:"browser"`  // 浏览器类型，只匹配主流浏览器类型，剩下的归为其他(0)
	Duration int64  `json:"duration"` // 在页面的停留时间，毫秒数
	IP       string `json:"ip"`       // ip，无法获取则传递 0.0.0.0
	Kind     int64  `json:"kind"`     // 报告分类，2表示行为报告
	Time     int64  `json:"time"`     // 访问页面的时间，时间戳
	URL      string `json:"url"`      // 页面地址，不带?后面的get参数
	User     int64  `json:"user"`     // 用户id，通过设置token区分每个用户
	WebID    int64  `json:"web_id"`   // 网站id，由使用者调用脚本函数传递
}

// Req 请求信息
type Req struct {
	Kind int64 `json:"kind,omitempty"` // 报告分类，3表示请求信息
	//ReqHeader string `json:"req_header"`     // 请求头，不同请求头用分号;分割
	//ReqParams string `json:"req_params"`     // 请求参数，只算请求体的参数，转成json
	ResBody string `json:"res_body"` // 响应体，转成json，若请求失败则传递空串
	//ResHeader string `json:"res_header"`     // 响应头，不同响应头用分号;分割，若请求失败则传递空串
	ResTime int64  `json:"res_time"` // 请求响应的时间，毫秒数，请求失败传超时时间
	SendURL string `json:"send_url"` // 请求的路径，带?后面的get参数
	Status  int64  `json:"status"`   // 状态码，请求失败则传0
	Success bool   `json:"success"`  // 成功/失败，请求是否成功（是否有响应，与状态码无关）
	Time    int64  `json:"time"`     // 发送请求的时间，时间戳
	URL     string `json:"url"`      // 页面地址，不带?后面的get参数
	Way     string `json:"way"`      // 请求方法，用小写ger/post
	WebID   int64  `json:"web_id"`   // 网站id，由使用者调用脚本函数传递
}
